package cn.wolfcode.wolf2w.redis.util;

import cn.wolfcode.wolf2w.util.Consts;
import lombok.Getter;

/**
 * redis 的 key管理工具类
 * 一个枚举示例就是一个key
 */
@Getter
public enum RedisKeys {

    // 今日访问的key
    HOMEPAGE_TODAY("homepage_today", -1L),
    // 总的访问数量的key
    HOMEPAGE_TOTAL("homepage_total", -1L),

    // 接口防刷的key
    BRUSH_PROOF("brush_proof", -1L),
    // 用户攻略点赞的key
    USER_STRATEGY_THUMB("user_strategy_thumb", -1L),

    // 用户攻略收藏的key
    USER_STRATEGY_FAVOR("user_strategy_vo", -1L),

    // 用户攻略统计状态对象的key
    STRATEGY_STATIS_VO("strategy_statis_vo", -1L),
    // 用户游记统计状态对象的key
    TRAVEL_STATIS_VO("travel_statis_vo", -1L),

    // 用户登录的key
    USER_LOGIN_TOKEN("user_login_token", Consts.USER_INFO_TOKEN_VAI_TIME * 60L),

    // 验证码key
    VERIFY_CODE("verify_code", Consts.VERIFY_CODE_VAI_TIME * 60L);

    // key 前缀
    private String prefix;
    // key 有效时间 -1 永久 单位秒
    private Long time;

    private RedisKeys(String prefix, Long time) {
        this.prefix = prefix;
        this.time = time;
    }

    // 拼接完整的redis key
    public String join(String... values) {
        StringBuilder stringBuilder = new StringBuilder(80);

        stringBuilder.append(this.prefix);
        for (String value : values) {
            stringBuilder.append(":").append(value);
        }

        return stringBuilder.toString();
    }

}
